Rocky Linux の起動時に Systems Manager ステートマネージャーを実行してみた
こんにちは、望月です。
前回、Rocky Linux で起動時に SSM Agent と AWS CLI を User data でインストールしてみたというブログを書きました。
このブログを書いた理由としてそもそも SSM ステートマネージャーを利用する場合は SSM Agent が必要となり、Rocky Linux の起動時に SSM ステートマネージャーを利用し Web サーバーをセットアップすることができるかというのを確認するためにまずは User data で SSM Agent と AWS CLI をインストールしてみました。
今回は起動時に SSM ステートマネージャーを利用し Web サーバーをセットアップできるかを確認していきたいと思います。
やってみた
ステートマネージャーの関連付けの作成
ステートマネージャーのコンソールに移動し、関連付けの作成を行います。
設定については以下内容にて設定を行っています。
- 名前: rockylinux-startup-web
- 例として
rockylinux-startup-web
という名前にしています
- 例として
- ドキュメント: AWS-RunShellScript
- 実行するコマンドを指定するために
AWS-RunShellScript
を選択しています
- 実行するコマンドを指定するために
- パラメーター: 実行するコマンドについては以下を参照
sudo dnf update -y sudo dnf install -y httpd php sudo systemctl start httpd sudo systemctl enable httpd sudo usermod -a -G apache rocky sudo chown -R rocky:apache /var/www sudo chmod 2775 /var/www sudo find /var/www -type d -exec chmod 2775 {} \; sudo find /var/www -type f -exec chmod 0664 {} \; sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
- ターゲットの選択: インスタンスタグを指定 (Key: Env / Value: Web)
- 特定のインスタンスのみ実行するためにタグを利用し、インスタンスを指定する形にしています。ここでは
Env / Web
を指定しています。
- 特定のインスタンスのみ実行するためにタグを利用し、インスタンスを指定する形にしています。ここでは
- スケジュールを指定: スケジュールなし
- 関連付けを1回のみ実行するためにスケジュールなしを選択しています
EC2 インスタンスの作成
作成時にはタグの設定を以下のように Key: Env / Value: Web で行い、User data で SSM Agent をインストールするのを忘れないようにしましょう。
SSM Agent をインストールするための User data については以下ブログをご確認ください。
EC2 インスタンスの確認
EC2 インスタンスに HTTP アクセスし 「http://[IPアドレス]/phpinfo.php」 で PHP Info が閲覧でき 「http://[IPアドレス]/」 で Apache のテストページが閲覧できれば問題ありません。
また、SSM ステートマネージャー側でも実行ログを確認することができます。 ステートマネージャーの一覧から Success: 1 になっていることを確認でき、以下流れのように実行 ID 等をたどっていくと最終的に Run Command の実行ログを確認することができます。
- ステートマネージャーの一覧から関連 ID をクリック
- 続けて実行 ID をクリック
- リソース ID に対象インスタンス ID であることを確認し、出力の Output をクリック
まとめ
Rocky Linux の起動時に SSM ステートマネージャーを実行し、ステートマネージャーを使って Web サーバーのセットアップを行うことが出来ました。 しかし、そもそも User data でステートマネージャーで実行しているコマンドも一緒に流せばいいと思いましたよね。私も思いました。
今回、User data を利用しているのは Rocky Linux が SSM Agent をデフォルトでインストールされていないからで、Amazon Linux 2 などであれば、そもそも User data を利用する必要がなく、ステートマネージャーのみで完結することが出来ます。
そこで気になるのが User data をステートマネージャーに置き換えるのはどうなんだろうということです。複数の記事に分けてしまいましたが次回は User data とステートマネージャーの機能を比較し、どういった使い分けが考えられるかということを記事にしたいと思います。